package com.njit.mailm.commmon.utils;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.SimpleEmail;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import java.util.Properties;


public class MailUtil {
	/**
	 * 创建Session对象，此时需要配置传输的协议，是否身份认证
	 */
	public static Session createSession(String protocol) {
		Properties property = new Properties();
		property.setProperty("mail.transport.protocol", protocol);
		property.setProperty("mail.smtp.auth", "true");

		Session session = Session.getInstance(property);

		// 启动JavaMail调试功能，可以返回与SMTP服务器交互的命令信息
		// 可以从控制台中看一下服务器的响应信息
		session.setDebug(true);
		return session;
	}

	/**
	 * 传入Session、MimeMessage对象，创建 Transport 对象发送邮件
	 */
	public static void sendMail(Session session, MimeMessage msg) throws Exception {

		// 设置发件人使用的SMTP服务器、用户名、密码
		String smtpServer = "smtp.sina.com";
		String user = "njitjavamail@sina.com";
		String pwd = "test123456";

		// 由 Session 对象获得 Transport 对象
		Transport transport = session.getTransport();
		// 发送用户名、密码连接到指定的 smtp 服务器
		transport.connect(smtpServer, user, pwd);

		transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO));
		transport.close();
	}

	/**************************************** CommonMail ****************************************/

	public static void sendSimpleMail() throws Exception {
		SimpleEmail email = new SimpleEmail();
		email.setHostName("smtp.sina.com"); // 发送服务器
		email.setAuthentication("njitjavamail@sina.com", "test123456"); // 发送邮件的用户名和密码
		email.addTo("njitjavamail@sina.com"); // 接收邮箱
		email.setFrom("njitjavamail@sina.com"); // 发送邮箱
		email.setSubject("测试主题");// 主题
		email.setMsg("这里是邮件内容"); // 内容
		email.setSmtpPort(25); // 端口
		email.setSSL(false); // gmail需要设置SSL安全设置
		email.setCharset("GBK"); // 编码
		email.send();
	}


	// 发送html格式的mail
	public static void htmlEmail(com.njit.mailm.core.bean.MessageWrap msg) {
		HtmlEmail email = new HtmlEmail();// 构造一个html mail对象
		email.setHostName("smtp.sina.com"); // 发送服务器
		email.setAuthentication("njitjavamail@sina.com", "test123456"); // 发送邮件的用户名和密码
		try {
			email.addTo(msg.getTo());// 设置发送对象
			if (msg.getCopyTo() != null && !msg.getCopyTo().isEmpty()) {
			email.addCc(msg.getCopyTo());
		}
			if (msg.getBcc() != null && !msg.getBcc().isEmpty()) {
				email.addBcc(msg.getBcc());
			}
			email.setFrom("njitjavamail@sina.com","njitjavamail@sina.com");// 设置发送人
			email.setSubject(msg.getSubject());// 设置主题
			String mag = msg.getBody();// 这里可以写你的html文档,因为本页面我是用xml文件做数据存储的,不能写标签,这里我就不写了
			email.setHtmlMsg(mag);// 设置内容
			email.setCharset("UTF-8");// 设置字符集
			email.send();// 发送
		} catch (EmailException e) {

			e.printStackTrace();
		}

	}

    
    
    
    
}
